/**并非最佳实践**/
// 1.请自行查找闭包的相关知识
// 2.注意代码组织结构
// 3.注意this指向的变化过程


(function(page) {
    var info = {
        'title': '数据集的名称最好使用中文进行说明',
        'type': '数据集的类型可以按image,txt等文件后缀进行天下',
        'note': '说明支持markdown说明，具体书写规范请查看<a href="docs/markdown">[什么是markdown]</a>'
    }

    var error = {
        'title': '数据集的名称不能为空',
        'type': '类型不能为空',
        'note': '说明不能为空'
    }


    page.form_info = info;
    page.form_error = error;

})(window.page || (window.page = {}));

(function(page) {

    var form = {
        elm: {
            'form': '#data-form',
            'item': '.form-group',
            'inputs': '.form-control'
        },
        init: function() {
            //console.log(this);
            form.infoMsg = page.form_info;
            form.errMsg = page.form_error;
            form.bindEvent();
        },
        bindEvent: function() {
            //console.log(this);
            var $form = $(form.elm.form);

            $form.on("focus", form.elm.inputs, function(event) {
                event.stopPropagation();
                var target = $(this);
                form.toggleInfoTip(target);
            });

            $form.on("blur", form.elm.inputs, function() {
                var target = $(this);
                form.toggleInfoTip(target, false);
                //TODO:
                form.validateHandle(target);
            });
        },
        toggleInfoTip: function(obj, isshow) {
            var target = obj;
            var isShow = !!(isshow == undefined);

            var _$item = target.parents(form.elm.item).eq(0);
            var _$item_help = _$item.find('.help-block');

            if (isShow || isshow) {
                var gInfo = form.infoMsg;
                var infoKey = target.data('info');
                if (!infoKey) return;
                var infoVal = gInfo[infoKey];
                if (!infoVal) return;


                if (_$item.hasClass('item-error')) {
                    _$item.removeClass('item-error');
                    _$item_help.html('');
                }

                _$item.addClass('item-info');
                _$item_help.html('<i class="fa fa-info-circle"></i>&nbsp;' + infoVal);
            } else {
                _$item.removeClass('item-info');
                _$item.removeClass('item-error');
                _$item_help.html('');
            }
        },
        showErrTip: function(obj, status, msgstr) {
            var target = obj;

            var _$item = target.parents(form.elm.item).eq(0);
            var _$item_help = _$item.find('.help-block');

            if (status == 'success') {
                if (msgstr && msgstr != '') {
                    _$item.addClass('item-success');
                    _$item_help.html('<i class="fa fa-check-circle"></i>&nbsp;' + msgstr);
                }
            } else if (status == 'error') {
                _$item.addClass('item-error');
                _$item_help.html('<i class="fa fa-exclamation-circle"></i>&nbsp;' + msgstr);
            } else if (status == 'info') {
                _$item.addClass('item-info');
                _$item_help.html('<i class="fa fa-info-circle"></i>&nbsp;' + msgstr);
            } else {
                _$item_help.html('');
            }
        },
        validateHandle: function(obj) {
            //TODO:验证，
            //调用validateRules验证规则
            //调用showErrTip方法显示错误或者提示
        },
        validateRules:function (obj) {
            //TODO:验证规则
        }

    }
    page.form = form;

})(window.page || (window.page = {}))

page.form.init();
